스크립트로 공개 REST 요청을 처리할 수 있습니다. 외부 서비스에서 제목과 본문을 보내 노트를 만드는 등의 연동에 사용합니다.

외부 요청으로 노트 만들기

다음은 백엔드 JavaScript 코드 노트예제입니다. 예시 비밀값을 그대로 공개 서비스에 사용하면 안 됩니다.

const {req, res} = api;
const {secret, title, content} = req.body;

if (req.method == 'POST' && secret === 'secret-password') {
    // 노트를 저장할 상위 노트를 지정합니다. 
    // 이 코드 노트의 관계로 대상 상위 노트를 연결합니다.
    // 간단한 예제에서는 노트 정보에서 확인한 고정 ID를 사용할 수도 있습니다.
    const targetParentNoteId = api.currentNote.getRelationValue('targetNote');
    
    const {note} = api.createTextNote(targetParentNoteId, title, content);
    const notePojo = note.getPojo();

    res.status(201).json(notePojo);
}
else {
    res.send(400);
}

#customRequestHandler=create-note 라벨과 저장할 위치를 가리키는 ~targetNote 관계를 지정합니다.

요청 예시

POST http://my.trilium.org/custom/create-note
Content-Type: application/json

{
  "secret": "secret-password",
  "title": "인사",
  "content": "안녕하세요."
}

/custom 아래 요청은 customRequestHandler 라벨이 있는 노트에서 처리기를 찾습니다. 라벨 값은 경로에 대응하는 정규식입니다. 찾은 스크립트에는 Express의 요청 객체와 응답 객체가 api.req와 api.res로 제공됩니다.

이 경로는 기본 인증을 자동으로 요구하지 않습니다. 처리기에서 인증을 구현해야 합니다. 예제는 POST 방식과 비밀값을 확인한 뒤 스크립트 API로 노트를 만듭니다.

파일 제공

파일만 제공하려면 customResourceProvider 라벨에 경로 정규식을 지정할 수 있습니다. 사용자 지정 리소스 제공을 참고하세요.

고급 사용

요청과 응답 객체의 기능은 Express 공식 문서에서 확인할 수 있습니다.

경로 매개변수

http://my.trilium.org/custom/notes/123

마지막 숫자처럼 바뀌는 부분을 정규식으로 받을 수 있습니다.

notes/([0-9]+)

괄호로 묶은 일치 결과는 api.pathParams에 들어갑니다.

const noteId = api.pathParams[0];

?noteId=123 같은 쿼리 매개변수는 req.query.noteId로 읽습니다.